
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_Hans">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Django 0.95 版本发行说明 &#8212; Django 3.2.11.dev 文档</title>
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/language_data.js"></script>
    <link rel="index" title="索引" href="../genindex.html" />
    <link rel="search" title="搜索" href="../search.html" />
    <link rel="next" title="安全问题档案" href="security.html" />
    <link rel="prev" title="Django 0.96 版本发行说明" href="0.96.html" />



 
<script src="../templatebuiltins.js"></script>
<script>
(function($) {
    if (!django_template_builtins) {
       // templatebuiltins.js missing, do nothing.
       return;
    }
    $(document).ready(function() {
        // Hyperlink Django template tags and filters
        var base = "../ref/templates/builtins.html";
        if (base == "#") {
            // Special case for builtins.html itself
            base = "";
        }
        // Tags are keywords, class '.k'
        $("div.highlight\\-html\\+django span.k").each(function(i, elem) {
             var tagname = $(elem).text();
             if ($.inArray(tagname, django_template_builtins.ttags) != -1) {
                 var fragment = tagname.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>");
             }
        });
        // Filters are functions, class '.nf'
        $("div.highlight\\-html\\+django span.nf").each(function(i, elem) {
             var filtername = $(elem).text();
             if ($.inArray(filtername, django_template_builtins.tfilters) != -1) {
                 var fragment = filtername.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>");
             }
        });
    });
})(jQuery);</script>

  </head><body>

    <div class="document">
  <div id="custom-doc" class="yui-t6">
    <div id="hd">
      <h1><a href="../index.html">Django 3.2.11.dev 文档</a></h1>
      <div id="global-nav">
        <a title="Home page" href="../index.html">Home</a>  |
        <a title="Table of contents" href="../contents.html">Table of contents</a>  |
        <a title="Global index" href="../genindex.html">Index</a>  |
        <a title="Module index" href="../py-modindex.html">Modules</a>
      </div>
      <div class="nav">
    &laquo; <a href="0.96.html" title="Django 0.96 版本发行说明">previous</a>
     |
    <a href="index.html" title="发行说明" accesskey="U">up</a>
   |
    <a href="security.html" title="安全问题档案">next</a> &raquo;</div>
    </div>

    <div id="bd">
      <div id="yui-main">
        <div class="yui-b">
          <div class="yui-g" id="releases-0.95">
            
  <div class="section" id="s-django-version-0-95-release-notes">
<span id="django-version-0-95-release-notes"></span><h1>Django 0.95 版本发行说明<a class="headerlink" href="#django-version-0-95-release-notes" title="永久链接至标题">¶</a></h1>
<p>欢迎来到 Django 0.95 版本</p>
<p>这表明了一个从 2006 年 1 月发布 0.91 版本以来 Django 部署过程的一个显著的进步。将这次发版的每一个改动的细节都详细的罗列出来将会占用太多的版面，但是下面有一个简短的介绍总结。</p>
<div class="section" id="s-suitability-and-api-stability">
<span id="suitability-and-api-stability"></span><h2>适用性和 API 的稳定性<a class="headerlink" href="#suitability-and-api-stability" title="永久链接至标题">¶</a></h2>
<p>这个发行版的目的是为想要在生产级应用中使用 Django 的开发者提供一个稳定的参考点。</p>
<p>然而，这并不是 1.0 版本，我们将在 1.0 之前引入更多变化。要想清楚地了解在 1.0 之前框架的哪些地方会发生变化（哪些地方不会发生变化），请看 <code class="docutils literal notranslate"><span class="pre">api-stability.txt</span></code> 文件，它位于发行版的 docs/ 目录中。</p>
<p>不可能需要使用一些在该文档中被标记为 “subject to API change” 的功能，但只要你觉得没问题，我们也没问题，只要你理解 API 将来可能会改变。</p>
<p>幸运的是，在 1.0 版本之前，Django 的大部分核心 API 都不会发生变化。0.95 和 1.0版本之间可能不会像 0.91 和 0.95 之间有那么大的变化。</p>
</div>
<div class="section" id="s-changes-and-new-features">
<span id="changes-and-new-features"></span><h2>改变及新特性<a class="headerlink" href="#changes-and-new-features" title="永久链接至标题">¶</a></h2>
<p>这个版本的主要变化（对于目前使用 0.91 版本的开发者来说）是合并了 'magic-removal' 开发分支的结果。这个分支删除了 Django 代码编写方式中的一些限制因素，这些限制因素是 Django 在开源发布之前的早期决定的结果。现在，我们可以写出更自然、更符合预期的 Pythonic 代码，而且幕后发生的“黑魔法”也少了。</p>
<p>除此之外，此版本的另一个主题是可用性的显着增加。 我们在错误消息、文档等方面做了无数改进，以提高开发人员的生活质量。</p>
<p>在 0.95 版本中引入的新特性和变更包括：</p>
<ul class="simple">
<li>Django 现在使用更一致和自然的过滤接口来从数据库中检索对象。</li>
<li>用户定义的模型、函数和常量现在出现在它们所定义的模块命名空间中。（以前所有的东西都被神奇地转移到 <code class="docutils literal notranslate"><span class="pre">django.models.*</span></code> 的命名空间。）</li>
<li>一些可选的应用程序，如简单页面、站点和重定向应用，已经解耦并移入 <code class="docutils literal notranslate"><span class="pre">django.contrib</span></code>。 如果您不想使用这些应用程序，则不必再安装其数据库表。</li>
<li>Django 现在支持管理数据库事务</li>
<li>我们添加了编写自定义身份验证和授权后端的功能，以便针对备用系统（如 LDAP）对用户进行身份验证。</li>
<li>通过新的 “Manager” API，我们可以更轻松地将自定义表级功能添加到模型中。</li>
<li>现在可以在没有数据库的情况下使用 Django 了。这意味着框架不再需要你有一个工作的数据库来提供动态页面。换句话说，你可以只使用 URLconfs／views 本身。以前，该框架要求配置数据库，而不管你是否真的使用它。</li>
<li>现在，在模型上覆盖 save() 和 delete() 方法更加明确和自然，而不需要挂载 pre_save() 和 post_save() 方法的钩子。</li>
<li>现在，框架的各个部分可以在不需要设置环境变量的情况下进行配置。这允许在其他应用程序中使用 Django 模板系统。</li>
<li>随着我们扩展国际化（i18n）支持，该框架的越来越多部分已经实现了国际化。 Django 代码库（包括代码和模板）现已至少部分翻译成 31种 语言。 从阿拉伯语到中文到匈牙利语到威尔士语，现在可以通过你的母语使用 Django 的管理站点。</li>
</ul>
<p>在某些情况下，从 0.91 兼容代码移植到 0.95 代码库所需的改动数量很大。然而，在大多数情况下，这些改动都是合理的常规改动，只需要做一次。在 <a class="reference external" href="https://code.djangoproject.com/wiki/RemovingTheMagic">Removing The Magic</a> wiki 页面中描述了一个必要的更改列表。还有一个简单的 <a class="reference external" href="https://code.djangoproject.com/wiki/MagicRemovalCheatSheet">checklist</a> ，供进行移植操作时参考。</p>
</div>
<div class="section" id="s-problem-reports-and-getting-help">
<span id="problem-reports-and-getting-help"></span><h2>报告问题以及获取帮助<a class="headerlink" href="#problem-reports-and-getting-help" title="永久链接至标题">¶</a></h2>
<p>需要帮助来解决 Django 相关的问题吗？在发行包中的文档也可以在 <a class="reference external" href="https://www.djangoproject.com/">Django 官网</a> 中的 <a class="reference internal" href="../index.html"><span class="doc">在线文档</span></a> 处找到。其中 <a class="reference internal" href="../faq/index.html"><span class="doc">FAQ</span></a> 文档尤为推荐，因为它包含那些针对时不时会出现问题的解决方法。</p>
<p>对于更个性化的帮助，<a class="reference external" href="https://groups.google.com/g/django-users">django-users</a> 邮件列表是一个活跃的邮件列表，它有超过 2000 个订阅者，他们可以帮助你解决 Django 的各类问题。我们推荐你首先搜索查看以前的存档，因为很多通用问题经常出现多次，而那些特定问题可能也已经被回答了。</p>
<p>最后，对于那些愿意更快通过IRC提供反馈的人们，在 <code class="docutils literal notranslate"><span class="pre">irc.libera.chat</span></code> 上有一个 <code class="docutils literal notranslate"><span class="pre">#django</span></code> 频道，是由Django用户和全世界开发者们发起的。友善的人们常常在一天中可用的任何时间里去帮助频道里的人，或者就是聊一聊天。</p>
<p>感谢使用 Django！</p>
<p>Django 项目始于 2006 年 7 月</p>
</div>
</div>


          </div>
        </div>
      </div>
      
        
          <div class="yui-b" id="sidebar">
            
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../contents.html">Table of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Django 0.95 版本发行说明</a><ul>
<li><a class="reference internal" href="#suitability-and-api-stability">适用性和 API 的稳定性</a></li>
<li><a class="reference internal" href="#changes-and-new-features">改变及新特性</a></li>
<li><a class="reference internal" href="#problem-reports-and-getting-help">报告问题以及获取帮助</a></li>
</ul>
</li>
</ul>

  <h4>上一个主题</h4>
  <p class="topless"><a href="0.96.html"
                        title="上一章">Django 0.96 版本发行说明</a></p>
  <h4>下一个主题</h4>
  <p class="topless"><a href="security.html"
                        title="下一章">安全问题档案</a></p>
  <div role="note" aria-label="source link">
    <h3>本页</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/releases/0.95.txt"
            rel="nofollow">显示源代码</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>快速搜索</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="转向" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
              <h3>Last update:</h3>
              <p class="topless">12月 07, 2021</p>
          </div>
        
      
    </div>

    <div id="ft">
      <div class="nav">
    &laquo; <a href="0.96.html" title="Django 0.96 版本发行说明">previous</a>
     |
    <a href="index.html" title="发行说明" accesskey="U">up</a>
   |
    <a href="security.html" title="安全问题档案">next</a> &raquo;</div>
    </div>
  </div>

      <div class="clearer"></div>
    </div>
  </body>
</html>